package com.gisuni.sddc.platformManager.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONObject;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.pager.Pager;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.sql.SqlCallback;
import org.nutz.dao.util.cri.SqlExpression;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;

import com.gisuni.sddc.platformManager.model.Log;
import com.gisuni.sddc.platformManager.model.Organization;
import com.gisuni.sddc.platformManager.model.RoleInfo;
import com.gisuni.sddc.platformManager.model.UserInfo;
import com.gisuni.sddc.util.StringUtil;

/**
 * 
 *通过parameter表获取图层关联的表名
 */
@IocBean
public class LayerTableNameDao {
	
	@Inject
	private Dao gisplatform;
	/**
	   select t2.pcode||','||t3.table_name result from (select t.pcode,t.pname,t1.layer_id from parameter t 
			  left join module_r_layer t1 on t.pname = t1.layerparam) t2 
			  left join layer_info t3 on t2.layer_id = t3.id
	 */
	public static final String selectSql   = "select t2.pcode||','||t3.table_name result from (select t.pcode,t.pname,t1.layer_id from parameter t "
			 +" left join module_r_layer t1 on t.pname = t1.layerparam) t2 "
			 +" left join layer_info t3 on t2.layer_id = t3.id";
	
 
	public  Map getTableName( ) {
		String result = executeSQL();
		return mapTableName(result);
	}
	
	
	
	public  String executeSQL( ) {

		Sql sql = Sqls.create(selectSql);
	    sql.setCallback(new SqlCallback() {
			public Object invoke(Connection conn, ResultSet rs, Sql sql)
					throws SQLException {
				JSONArray result=new JSONArray();
				int numberOfColumns = rs.getMetaData().getColumnCount();
			     while (rs.next()){
			    	 JSONObject ret=new JSONObject();
						// 遍历查询结果字段
						for (int i = 0; i < numberOfColumns; i++) {
							Object obj = rs.getString(i + 1);
							ret.put(rs.getMetaData().getColumnName(i+1).trim(), obj);
						}
			    	 result.put(ret);
			     }
			     return result.toString();
			}
		});
	    gisplatform.execute(sql);
	    return  sql.getObject(String.class);
		 
	}
	
	
	public Map mapTableName(String json ){
		Map<String, String> map = new HashMap<String, String>();
		JSONArray resultJsonArr = new JSONArray(json);
		StringBuffer sbf = new StringBuffer();
		if (resultJsonArr != null && resultJsonArr.length() > 0) {
			for (int i = 0; i < resultJsonArr.length(); i++) {
				JSONObject ret = (JSONObject) resultJsonArr.get(i);
				Iterator iterator = ret.keys();
				while (iterator.hasNext()) {
					String key = (String) iterator.next();
					 
					if("RESULT".equals(key)){
						String value = (String) ret.get(key);
						if(!StringUtil.isNullOrEmpty(value)){
							String[] str = value.split(",");//KG,SDE.KG_1
							if(str.length==2){
//								if("KG".equals(str[0])){ //控规
//									map.put("KG", str[1]);
//								}else if("TG".equals(str[0])){//土规
//									map.put("TG", str[1]);
//								}else if("SJJC".equals(str[0])){//三旧旧厂
//									map.put("SJJC", str[1]);
//								}else if("SJJCH".equals(str[0])){//三旧旧城
//									map.put("SJJCH", str[1]);
//								}else if("CZLD".equals(str[0])){//村自留地
//									map.put("CZLD", str[1]);
//								}else if("GYCBYD".equals(str[0])){//国有储备用地
//									map.put("GYCBYD", str[1]);
//								}else if("NRSJDJC".equals(str[0])){//纳入三旧的村
//									map.put("NRSJDJC", str[1]);
//								}else if("WYTZ".equals(str[0])){//外业拓展
//									map.put("WYTZ", str[1]);
//								}else if("ZCQXM".equals(str[0])){//中长期项目
//									map.put("ZCQXM", str[1]);
//								}else if("DQXM".equals(str[0])){//短期项目
//									map.put("DQXM", str[1]);
//								}else if("ZSJWS".equals(str[0])){//在售及未售项目
//									map.put("ZSJWS", str[1]);
//								}else if("SJ".equals(str[0])){//市界
//									map.put("SJ", str[1]);
//								}else if("QJ".equals(str[0])){//区界
//									map.put("QJ", str[1]);
//								}else if("ZJ".equals(str[0])){//镇界
//									map.put("ZJ", str[1]);
//								}else if("CJ".equals(str[0])){//村界
//									map.put("CJ", str[1]);
//								}
								map.put(str[0], str[1]);
							}
						}
					}
					
					
				}	
			}
		}
		
		/***/
//	 		map.put("KG", "SDDCGISDATA.KG");
//	 		map.put("TG", "SDDCGISDATA.TG");
//	 		map.put("SJJC", "SDDCGISDATA.JCF");
//	 		map.put("SJJCH", "SDDCGISDATA.JCH");
//	 		map.put("CZLD", "SDDCGISDATA.LYD");
//	 		map.put("GYCBYD", "SDDCGISDATA.KG");
//	 		map.put("NRSJDJC", "SDDCGISDATA.JCF");
//	 		map.put("WYTZ","SDDCGISDATA.WYTZ");
	 		
		 
		return map;
		
	}
 
}
